
public class Test {
    public static void main(String[] args) {

        //调用matches方法 - 判断input是否完全和pattern匹配
        System.out.println("Hi,ABC,good".matches("ABC")); //输出"Hi,ABC,good"与"ABC"匹配的结果 - false
        //结果分析：
        //pattern是“ABC"，而"Hi,ABC,good中虽然包括"ABC"，但是其前后还有其他字符，故不是完全匹配

        System.out.println("Hi,ABC,good".matches(".*ABC.*"));//输出"Hi,ABC,good"与".*ABC.*"匹配的结果 - true
        //结果分析：
        //pattern是".*ABC.*"其中‘.’代表任意字符，‘*’代表出现零次或多次，即指包含了“ABC”的字符串。
        //所以只要一个字符串中含有”ABC“三个字符，不管其前后是否有其他字符，这个字符串都与“ABC”完全匹配
        //故"Hi,ABC,good"和".*ABC.*"完全匹配，


        //调用replaceAll方法进行字符串的替换 - 返回一个把字符串，该字符串将对象中与regex正则表达式匹配的字符串替换为参数replacement中的字符串。
        System.out.println("A,B;C".replaceAll(",;","#"));//将"A,B;C"中与",;"匹配的字符替换成"#"，并输出结果
        //结果分析：
        //把字符串"A,B;C"中的",;"替换为"#"  但是该字符串中并没有与",;"匹配的字符串
        //所以程序输出的字符串与原字符串一样

        System.out.println("A,B;C".replaceAll("[,;]","#"));//将"A,B;C"中与"[,;]"匹配的字符替换成"#"，并输出结果
        //结果分析：
        //把字符串"A,B;C"中的"[,;]"替换为"#" 其中[,;]表示','或';'任意一个字符，即遇到','会进行替换，遇到';'也会进行替换
        //所以程序输出的字符串是"A#B#C"

        //调用split方法进行字符串的分解 - 该方法将regex正则表达式中的字符作为分隔符，将字符串分解为若干个子字符串，存储到一个字符串数组中再返回。

        String[] tokens = "A,B;C".split("[,;]");//将与"[,;]"匹配的字符作为分隔符分割字符串"A,B;C"
        for (int i = 0; i < tokens.length; i++) {//遍历token中的所有元素
            System.out.print(tokens[i]+" ");//输出所有字符串数组token中的所有子字符串，用空格分隔开
        }
        //结果分析：
        //上面语句把','和';'均作为分隔符把"A,B;C"分割为三个子字符串"A","B","C"，放到一个字符串数组token中
        //经过遍历，将输出token中的每个子字符串，并用空格隔开，结果为：A B C
    }
}
